// // 设计算法将一个带头结点的单链表 A 分解为两个具有相同结构的链表 B 和C，
// // 其中 B 表的结点为 A 表中小于零的结点，
// // 而 C 表中的结点为 A 表中值大于零的结点
// // （链表 A 中的元素为非零整数，要求 B、C 表利用 A 表的结点）。
// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
// //节点结构
// typedef struct LinkNode {
//     int data;
//     struct LinkNode* next;
// }LinkNode;
// //链表结构
// typedef struct LinkList {
//     LinkNode* head;
// }LinkList;
// //链表初始化
// LinkList* LinkInit() {
//     LinkList* list=(LinkList*)malloc(sizeof(LinkList));
//     list->head=(LinkNode*)malloc(sizeof(LinkNode));
//     list->head->next=NULL;
//     return list;
// }
//
// // 插入节点到链表尾部
// void LinkInsert(LinkList* list,int data) {
//     LinkNode* newNode=(LinkNode*)malloc(sizeof(LinkNode));
//     if(newNode==NULL) {
//         perror("malloc");
//     }
//     newNode->data=data;
//     newNode->next=NULL;
//     LinkNode* current=list->head;
//     while (current->next!=NULL) {
//         current=current->next;
//     }
//     current->next=newNode;
// }
// //头插法
// void LinkHeadInsert(LinkList* list,int data) {
//     LinkNode* newNode=malloc(sizeof(LinkNode));
//     if(newNode==NULL) {
//         perror("malloc");
//     }
//     newNode->data=data;
//     newNode->next=list->head->next;
//     list->head->next=newNode;
// }
//
// //打印链表
// void printLinkList(LinkList* list) {
//     LinkNode* current=list->head->next;
//     while(current!=NULL) {
//         printf("%d -> ",current->data);
//         current=current->next;
//     }
//     printf("\n");
// }
//
// void DDD(LinkList* A,LinkList* B,LinkList* C) {
//     LinkNode* p=A->head->next;
//     B->head->next=NULL;
//     C->head->next=NULL;
//     LinkNode* b=B->head;
//     LinkNode* c=C->head;
//     while(p!=NULL) {
//         if(p->data<0) {
//             LinkNode* tmp=p;
//             p=p->next;
//             b->next=tmp;
//             b=b->next;
//         }else if(p->data>0) {
//             LinkNode* tmp=p;
//             p=p->next;
//             c->next=tmp;
//             c=c->next;
//         }
//     }
//     b->next=NULL;
//     c->next=NULL;
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     LinkList* A=LinkInit();
//     LinkList* B=LinkInit();
//     LinkList* C=LinkInit();
//     LinkInsert(A,3);
//     LinkInsert(A,-2);
//     LinkInsert(A,-5);
//     LinkInsert(A,6);
//     LinkInsert(A,9);
//     printf("链表A:");
//     printLinkList(A);
//     printf("\n");
//     DDD(A,B,C);
//     printf("链表B:");
//     printLinkList(B);
//     printf("\n");
//     printf("链表C:");
//     printLinkList(C);
//     printf("\n");
//     free(A->head);
//     free(A);
//     return 0;
// }